/**
 * @brief 4g dtu或者路由器内部软件配置头文件。通过配置这里定义的变量来控制编译的条件
 * @date 2018-2-9
 * @author 宋炜
*/

#ifndef __4GDTU_CONFIG_HPP__
#define __4GDTU_CONFIG_HPP__

/* 检查编译器是否支持c++11，如果不支持则退出编译 */
#if __cplusplus < 201103L
#error This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif

/*
* 移远提供UART的操作接口函数，同时linux也有相关的函数提供。如果需要使用
* 移远定义的接口函数那么就这个宏定义为1
*/
#define  USE_QUEC_UART    0
/*
* 如果使用linux自带的串口编程方式，那么可以选择使用同步操作接口或者使用异步
* 接口。使用AIO的时候将USE_AIO定义为1
*/
#if USE_QUEC_UART == 0
	#define USE_AIO    0  
#elif defined( USE_AIO )
	#undef  USE_AIO
#endif
// 串口模块错误代码开始位置
#define SERIAL_ERROR_BASE    -1000
/*
 * 如果是路由器用的软件，将下面的值改为1，就会编译WIFI相关的代码
*/
#define ENABLE_WIFI   			(0)
#define ENABLE_PHY    			(0)
/**
 * 如果需要启用modbus，则将下面的值修改为1. 注意modbus包含了modbus-RTU ， modbus TCP客户端两种协议，
 * 同时也包含了modbus自采集功能
 */
#define ENABLE_MODBUS 			(1)
/**
 * 定义RUDP引擎使用的事件循环。如果使用外部的事件循环将下面的宏设置为1 ， 否则设置为0；
 * 当设置为 1 的时候，事件循环将使用真个网络通讯的事件循环，否则模块将重新创建新的事件循环。
 */
#define RUDP_USE_OUTER_LOOP    		(1)
/**
 * 定义默认的串口数量
 */
#define SERIAL_PORT       		(1)
/*
* 如果需要对数据进行对称加密传输。将这个宏设置为非0值
*/
#define ENABLE_CRYPTO     		(0)
/*
* 如果要启用SSL支持，主要用于HTTPS和TCP SSL
*/
#define ENABLE_SSL        		(0)

// 如果要使用MQTT将这个值设置为非0值
#define ENABLE_MQTT       		(0)

// 如果要使用压缩数据传输，将这个宏设置为非0值
#define ENABLE_ZIP        		(0)

// 如果要使用GPS
#define ENABLE_GPS              	(1)

// 如果要使用jemalloc作为内存池管理模块，取消下面的注释
//#define __USE_MEMPOOL__
// 编译成UBUNTU下的调试版本。方便进行调试和软件BUG分析，修正以及评测，如果需要编译这个版本
// 将这个值设置为1
#define UBUNTU   		  	(0)

// 如果要使用拨号失败重启计时器，则将这个值设置为1. 否则将这个值设置为0，方便调试过程进行调试
#define REBOOT_TIMER            	(1)

// 定义设备类型；0 LTE810; 1 LTE820; 2 LTE810-G
#if ENABLE_WIFI == 1 || ENABLE_PHY == 1 
	#define DEVICE_TYPE         	(1)
#else
	#if ENABLE_GPS == 1
		#define DEVICE_TYPE     (2)
	#else
		#define DEVICE_TYPE     (0)
	#endif
#endif
#endif